// 版权归 Epic Games, Inc. 所有。保留所有权利。

#pragma once

#include "LyraWidgetFactory.h"
#include "Templates/SubclassOf.h"
#include "UObject/SoftObjectPtr.h"

#include "LyraWidgetFactory_Class.generated.h"

#define UE_API LYRAGAME_API

class UObject;
class UUserWidget;

/**
 * 基于类的 Lyra 控件工厂
 */
UCLASS(MinimalAPI)
class ULyraWidgetFactory_Class : public ULyraWidgetFactory
{
	GENERATED_BODY()

public:
	ULyraWidgetFactory_Class() { }

	/**
	 * 为数据查找控件类实现
	 * @param Data 数据对象
	 * @return 控件类
	 */
	UE_API virtual TSubclassOf<UUserWidget> FindWidgetClassForData_Implementation(const UObject* Data) const override;
	
protected:
	UPROPERTY(EditAnywhere, Category = ListEntries, meta = (AllowAbstract))
	TMap<TSoftClassPtr<UObject>, TSubclassOf<UUserWidget>> EntryWidgetForClass; // 类到控件类的映射
};

#undef UE_API